/**
* 表单验证类
* 版权所有
* @author      
* @version     $Id: cls_validator.js 6303 2009-10-29 01:59:01Z suz $
*/

/**
* 返回字节数
*/
String.prototype.lenb = function () {
    return this.replace(/[^\x00-\xff]/g, "***").length;
}

/**
* 构造函数，初始化本类中的一些非函数属性
*/
function Validator() {
    this.errMsg = new Array(); // 错误信息数组
}

var username = false; //用户名
var nickname = false; //昵称（网名）
var nicknameCh = false; //推荐使用中文昵称
var email = false; //电子邮箱
var password = false; //密码
var question = false; //密码保护问题
var answerStatus = false; //密码保护答案

/**
* 获取ID为el的元素
* @param el
* @return object
*/
Validator.prototype.$ = function (el) {
    return document.getElementById(el);
}

/**
* 检查用户输入的是否为合法的邮件地址
*
* @param :  elementId   表单元素的ID
* @param :  required    是否必须
* @param :  msg    错误提示内容
* @return:  BOOL        是否通过验证
*/
Validator.prototype.getBytes = function (str) {
    return str.replace(/[^\x00-\xff]/g, "***").length;
}

/**
* 检查用户输入的是否为合法的邮件地址
*
* @param :  elementId   表单元素的ID
* @param :  required    是否必须
* @param :  msg    错误提示内容
* @return:  BOOL        是否通过验证
*/
Validator.prototype.checkEmail = function (elementId, required, msg) {
    var email = this.trim(this.$(elementId).value);
    var r = /([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)/;

    if (email == '' && required == false) {
        return true;
    }
    else {
        if (email == '' && required == true) {
            msg = "邮箱不能为空";
            this.addErrMsg(msg);
            return false;
        }
    }
    if (!r.test(email)) {
        msg = "邮箱格式不正确";
        this.addErrMsg(msg);
        return false
    }
    else {

        return true;
    }
}

/**
* 检查用户登陆帐号字符串(只允许字母/数字/下划线的组合)
*
* @param :  elementId   表单元素的ID
* @param :  required    是否必须
* @param :  min         最少要选择几个
* @param :  max         最多要选择几个
* @param :  msg         错误提示内容
* @return:  BOOL        是否通过验证
*/
Validator.prototype.checkAccount = function (elementId, required, min, max, msg) {
    var account = this.trim(this.$(elementId).value);
    var r = /^[_a-zA-Z0-9]+$/;

    if (account == '' && required == false) {
        return true;
    }

    if (this.getBytes(account) < min || this.getBytes(account) > max) {
        this.addErrMsg(msg);
        return false;
    }

    if (!r.test(account)) {
        this.addErrMsg(msg);
        return false
    }
    else {
        return true;
    }
}

/**
* 检查用户登陆帐号字符串(只允许字母/数字/下划线,中文的组合)
*
* @param :  elementId   表单元素的ID
* @param :  required    是否必须
* @param :  min         最少要选择几个
* @param :  max         最多要选择几个
* @param :  msg         错误提示内容
* @return:  BOOL        是否通过验证
*/
Validator.prototype.checkAccountCn = function (elementId, required, min, max, msg) {
    var account = this.trim(this.$(elementId).value);
    var r = /^[\u4e00-\u9fa50-9a-zA-Z_]+$/;

    if (account == '' && required == false) {
        return true;
    }

    if (this.getBytes(account) < min || this.getBytes(account) > max) {
        this.addErrMsg(msg);
        return false;
    }

    if (!r.test(account)) {
        this.addErrMsg(msg);
        return false
    }
    else {
        return true;
    }
}

/**
* 检查昵称(只允许字母/数字/下划线/中文的组合)
*
* @param :  elementId   表单元素的ID
* @param :  required    是否必须
* @param :  min         最少要选择几个
* @param :  max         最多要选择几个
* @param :  msg         错误提示内容
* @return:  BOOL        是否通过验证
*/
Validator.prototype.checkNickname = function (elementId, required, min, max, msg) {
    var account = this.trim(this.$(elementId).value);
    var r = /^[\u4e00-\u9fa50-9a-zA-Z_]+$/;

    if (account == '' && required == false) {
        return true;
    }

    if (this.getBytes(account) < min || this.getBytes(account) > max) {
        this.addErrMsg(msg);
        return false;
    }

    if (!r.test(account)) {
        this.addErrMsg(msg);
        return false
    }
    else {
        return true;
    }
}

/**
* 检查用户输入的是否为合法字符串
*
* @param :  elementId   表单元素的ID
* @param :  required    是否必须
* @param :  min    最少要选择几个
* @param :  max    最多要选择几个
* @param :  msg    错误提示内容
* @return:  BOOL        是否通过验证
*/
Validator.prototype.checkStr = function (elementId, required, min, max, msg) {
    var str = this.trim(this.$(elementId).value);

    if (str == '' && required == false) {
        return true;
    }

    if (this.getBytes(str) < min || this.getBytes(str) > max) {
        this.addErrMsg(msg);
        return false;
    }

    return true;
}

/**
* 检查用户输入的是否为合法整数
*
* @param :  elementId   表单元素的ID
* @param :  required    是否必须
* @param :  min    最少要选择几个，可以为0，就是不指定
* @param :  max    最多要选择几个，可以为0，就是不指定
* @param :  msg    错误提示内容
* @return:  BOOL        是否通过验证
*/
Validator.prototype.checkInt = function (elementId, required, min, max, msg) {
    var integer = this.trim(this.$(elementId).value);
    if (integer == '' && required == false) {
        return true;
    }

    for (i = 0; i < integer.length; i++) {

        if (integer.charAt(i) < "0" || integer.charAt(i) > "9") {

            this.addErrMsg(msg);
            return false;
        }
    }

    if ((integer < min || integer > max) && (!(min == 0 && max == 0)) || integer.length == 0) {
        this.addErrMsg(msg);
        return false;
    }

    return true;
}

/**
* 检查用户输入的是否为使用HTTP协议的网址
*
* @param :  elementId   表单元素的ID
* @param :  required    是否必须
* @param :  msg    错误提示内容
* @return:  BOOL        是否通过验证
*/
Validator.prototype.checkHttpUrl = function (elementId, required, msg) {
    var url = this.trim(this.$(elementId).value);
    var r = /^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/;

    if (url == '' && required == false) {
        return true;
    }

    if (!r.test(url)) {
        this.addErrMsg(msg);
        return false;
    }

    return true;
}

/**
* 检查用户输入的是否为使用HTTPs协议的网址
*
* @param :  elementId   表单元素的ID
* @param :  required    是否必须
* @param :  msg    错误提示内容
* @return:  BOOL        是否通过验证
*/
Validator.prototype.checkHttpsUrl = function (elementId, required, msg) {
    var url = this.trim(this.$(elementId).value);
    var r = /^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/;
    var rs = /^https:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/;

    if (url == '' && required == false) {
        return true;
    }

    if (!r.test(url) && !rs.test(url)) {
        this.addErrMsg(msg);
        return false;
    }

    return true;
}

/**
* 检查用户输入的是否为电话号码
*
* @param :  elementId   表单元素的ID
* @param :  required    是否必须
* @param :  msg    错误提示内容
* @return:  BOOL        是否通过验证
*/
Validator.prototype.checkTel = function (elementId, required, msg) {
    var Letters = "0123456789()+-";
    var tel = this.trim(this.$(elementId).value);
    var telLength = tel.length;

    if (tel == '' && required == false) {
        return true;
    }
    else {
        if (tel == '' && required == true) {
            msg = "电话不能为空";
            this.addErrMsg(msg);
            return false;
        }
    }
    if (telLength == 0) {
        this.addErrMsg(msg);
    }

    for (var i = 0; i < telLength; i++) {
        var charSet = tel.charAt(i);
        if (Letters.indexOf(charSet) == -1) {
            msg = "电话格式不正确";
            this.addErrMsg(msg);
            return false;
        }
    }

    return true;
}

/**
* 检查用户输入的是否为手机号码
*
* @param :  elementId   表单元素的ID
* @param :  required    是否必须
* @param :  msg    错误提示内容
* @return:  BOOL        是否通过验证
*/
Validator.prototype.checkMobile = function (elementId, required, msg) {
    var mobile = this.trim(this.$(elementId).value);

    if (mobile == '' && required == false) {
        return true;
    }
    else {
        if (mobile == '' && required == true) {
            msg = "手机不能为空";
            this.addErrMsg(msg);
            return false;
        } 
    }

    if (mobile.length != 11) {

        msg = "手机位数不能超过11位";
        this.addErrMsg(msg);
        return false;
    }

    for (i = 0; i < mobile.length; i++) {
        if (i == 0 && mobile.charAt(i) != "1") {
            msg = "手机格式不正确";
            this.addErrMsg(msg);
            return false;
        } else if (i == 1 && mobile.charAt(i) != "3" && mobile.charAt(i) != "4" && mobile.charAt(i) != "5" && mobile.charAt(i) != "8") {
            msg = "手机格式不正确";
            this.addErrMsg(msg);
            return false;
        } else {
            if (mobile.charAt(i) < "0" || mobile.charAt(i) > "9") {
                msg = "手机格式不正确";
                this.addErrMsg(msg);
                return false;
            }
        }
    }

    return true;
}

/**
* 检查用户输入的是否为邮政编码
*
* @param :  elementId   表单元素的ID
* @param :  required    是否必须
* @param :  msg    错误提示内容
* @return:  BOOL        是否通过验证
*/
Validator.prototype.checkZipCode = function (elementId, required, msg) {
    var zipcode = this.trim(this.$(elementId).value);

    if (zipcode == '' && required == false) {
        return true;
    }

    if (zipcode == '' && required == true) {
        this.addErrMsg(msg);
        return false;
    }

    for (i = 0; i < zipcode.length; i++) {
        if (zipcode.charAt(i) < "0" || zipcode.charAt(i) > "9") {

            this.addErrMsg(msg);
            return false;
        }
    }

    return true;
}

/**
* 检查用户输入的是否为身份证号码
*
* @param :  elementId   表单元素的ID
* @param :  required    是否必须
* @param :  msg    错误提示内容
* @return:  BOOL        是否通过验证
*/
Validator.prototype.checkIdNum = function (elementId, required, msg) {
    var idnum = this.trim(this.$(elementId).value);

    if (idnum == '' && required == false) {
        return true;
    }

    if (idnum.length == 0) {
        this.addErrMsg(msg);
        return false;
    }

    return true;
}

/**
* 检查开始时间是否小于结束时间
*
* @param :  elementId   表单元素的ID
* @param :  firstElementId   first表单元素的ID
* @param :  secElementId    sec表单元素的ID
* @param :  msg    错误提示内容
* @return:  BOOL        是否通过验证
*/
Validator.prototype.checkTimeRange = function (firstElementId, secElementId, msg) {
    var firsttime = this.trim(this.$(firstElementId).value);
    var sectime = this.trim(this.$(secElementId).value);

    if (firsttime > sectime) {

        this.addErrMsg(msg);
        return false;
    }

    return true;
}

/**
* 限制具有相同名称的复选框(checkbox)的选中数目
*
* @param :  elementId   表单元素的ID
* @param :  required    是否必须
* @param :  min    最少要选择几个
* @param :  max    最多要选择几个
* @param :  msg    错误提示内容
* @return:  BOOL        是否通过验证
*/
Validator.prototype.checkSelectedNum = function (elementName, min, max, msg) {
    var elementName = this.$(elementName).value;

    return true;
}

/**
* 检查两表单的值是否相等
*
* @param :  firstElementId   first表单元素的ID
* @param :  secElementId    sec表单元素的ID
* @param :  msg    错误提示内容
* @return:  BOOL        是否通过验证
*/
Validator.prototype.checkEquation = function (firstElementId, secElementId, msg) {
    var first = this.trim(this.$(firstElementId).value);
    var sec = this.trim(this.$(secElementId).value);

    if (first != sec) {

        this.addErrMsg(msg);
        return false;
    }

    return true;
}

/**
* 显示错误信息
*
* @param :  showEleId  　用来显示错误信息的元素ID
*/
Validator.prototype.showErrMsg = function (showEleId) {
    if (this.errMsg.length > 0) {
        var msg = "";
        for (i = 0; i < this.errMsg.length; i++) {
            //msg += this.errMsg[i] + "<br />";
            msg += this.errMsg[i] + "\n";
        }

        //this.$(showEleId).innerHTML = msg;
        alert(msg);
    }
}

/**
* 显示错误信息
*
* @param :  showEleId  　用来显示错误信息的元素ID
*/
Validator.prototype.returnErrMsg = function (showEleId) {
    if (this.errMsg.length > 0) {
        var msg = "";
        for (i = 0; i < this.errMsg.length; i++) {
            //msg += this.errMsg[i] + "<br />";
            msg += this.errMsg[i] + "\n";
        }

        //this.$(showEleId).innerHTML = msg;
        return msg;
    }
}

/**
* 将错误信息加入错误信息数组
*
* @param :  msg   错误信息
*/
Validator.prototype.addErrMsg = function (msg) {
    this.errMsg.push(msg);
}

//suzhen 添加的部分

/**
* 检查用户登陆帐号字符串(只允许字母/数字/下划线的组合)
*
* @param :  elementId   表单元素的ID
* @param :  required    是否必须
* @param :  min         最少要选择几个
* @param :  max         最多要选择几个
* @param :  msg         错误提示内容
* @return:  BOOL        是否通过验证
*/

Validator.prototype.checkUsername = function (username) {
    Validator.prototype.username = false;

    var pattern = /^[\u4e00-\u9fa5A-Za-z0-9_@._\-]+$/;

    if (this.getBytes(username) == 0) {
        return "用户名（昵称）不能为空。";
    }

    if (this.getBytes(username) < 4) {
        return "用户名（昵称）太短，长度为4～30个字符。";
    }

    if (this.getBytes(username) > 30) {
        return "用户名（昵称）太长，长度为4～30个字符。";
    }

    if (!username.match(pattern)) {
        return "请正确填写用户名（昵称）。";
    }

    Validator.prototype.username = true;

    return true;
}

Validator.prototype.checkNickname1 = function (nickname) {
    var pattern = /[\s]+/; //空格
    var pattern_1 = /^[\u4e00-\u9fa5A-Za-z0-9_]+$/;
    var pattern_2 = /[\uFF00-\uFFFF]+/; //全角字符
    var pattern_2_1 = /[\uFF00-\uFFFF]/g; //全角字符个数
    var pattern_3 = /[\u4E00-\u9FA5]+/; //汉字
    var pattern_3_1 = /[\u4E00-\u9FA5]/g; //汉字个数
    var pattern_4 = /^[.．_＿]+|[.．_＿]+$/; //第一个和最后一个字符不能为中英文的.和_

    Validator.prototype.nickname = false;
    Validator.prototype.nicknameCh = false;

    if (this.getBytes(nickname) == 0) {
        return "昵称不能为空";
    }

    if (!nickname.match(pattern_1)) {
        return "请正确填写昵称";
    }

    if (nickname.match(pattern_4)) {
        return "昵称不能以 '.'或'_' 开头或结束";
    }

    if (this.getBytes(nickname) < 4) {
        return "昵称太短，长度为4～30位";
    }

    if (this.getBytes(nickname) > 30) {
        return "昵称太长，长度为4～30位";
    }

    //推荐使用中文昵称
    if (!nickname.match(pattern_3)) {
        Validator.prototype.nicknameCh = true;
    }

    Validator.prototype.nickname = true;
    return true;
}

Validator.prototype.checkEmail1 = function (Email) {
    Validator.prototype.email = false;
    var pattern = /^[a-zA-Z\d]+[\w\.\-@]*$/;
    if (Email != '' && !Email.match(pattern)) {
        return "邮箱地址不符合要求";
    }
    Validator.prototype.email = true;
    return true;
}

Validator.prototype.checkPassword1 = function (password) {
    Validator.prototype.password = false;
    var pattern = /[a-zA-Z]+/; //字母
    var pattern_1 = /\d+/; //数字
    var pattern_2 = /[\|\+\)\(\*\\\\$\!\=\}\{\]\[\:\?\/&%#@;~><\'\"]+/; //特殊字符


    if (this.getBytes(password) < 6) {
        return "密码太短，长度为6～20位";
    }
    if (this.getBytes(password) > 20) {
        return "密码太长，长度为6～20位";
    }

    if (this.getBytes(password) <= 6) {
        return "弱";
    }

    //字母 小于20位 弱
    if (password.match(pattern) && !password.match(pattern_1) && !password.match(pattern_2) && this.getBytes(password) <= 20) {
        return "弱";
    }

    //数字 小于20位 弱
    if (!password.match(pattern) && password.match(pattern_1) && !password.match(pattern_2) && this.getBytes(password) <= 20) {
        return "弱";
    }

    //特殊字符 小于20位 弱
    if (!password.match(pattern) && !password.match(pattern_1) && password.match(pattern_2) && this.getBytes(password) <= 20) {
        return "弱";
    }

    //字母 数字 小于20位 弱
    if (password.match(pattern) && password.match(pattern_1) && !password.match(pattern_2) && this.getBytes(password) <= 20) {
        return "中";
    }

    //字母 特殊字符 小于20位 中
    if (password.match(pattern) && !password.match(pattern_1) && password.match(pattern_2) && this.getBytes(password) <= 20) {
        return "中";
    }

    //数字 特殊字符 小于20位 中
    if (!password.match(pattern) && password.match(pattern_1) && password.match(pattern_2) && this.getBytes(password) <= 20) {
        return "中";
    }

    //字母数字特殊字符 小于20位 强
    if (password.match(pattern) && password.match(pattern_1) && password.match(pattern_2) && this.getBytes(password) <= 20) {
        return "强";
    }

    return true;
}


Validator.prototype.checkPasswordNew1 = function (password) {
    Validator.prototype.password = false;
    var pattern = /[a-zA-Z]+/; //字母
    var pattern_1 = /\d+/; //数字
    var pattern_2 = /[\|\+\)\(\*\\\\$\!\=\}\{\]\[\:\?\/&%#@;~><\'\"]+/; //特殊字符

    if (this.getBytes(password) <= 6) {
        return "弱";
    }

    //字母 小于20位 弱
    if (password.match(pattern) && !password.match(pattern_1) && !password.match(pattern_2) && this.getBytes(password) <= 20) {
        return "弱";
    }

    //数字 小于20位 弱
    if (!password.match(pattern) && password.match(pattern_1) && !password.match(pattern_2) && this.getBytes(password) <= 20) {
        return "弱";
    }

    //特殊字符 小于20位 弱
    if (!password.match(pattern) && !password.match(pattern_1) && password.match(pattern_2) && this.getBytes(password) <= 20) {
        return "弱";
    }

    //字母 数字 小于20位 弱
    if (password.match(pattern) && password.match(pattern_1) && !password.match(pattern_2) && this.getBytes(password) <= 20) {
        return "中";
    }

    //字母 特殊字符 小于20位 中
    if (password.match(pattern) && !password.match(pattern_1) && password.match(pattern_2) && this.getBytes(password) <= 20) {
        return "中";
    }

    //数字 特殊字符 小于20位 中
    if (!password.match(pattern) && password.match(pattern_1) && password.match(pattern_2) && this.getBytes(password) <= 20) {
        return "中";
    }

    //字母数字特殊字符 小于20位 强
    if (password.match(pattern) && password.match(pattern_1) && password.match(pattern_2) && this.getBytes(password) <= 20) {
        return "强";
    }

    return '弱';
}

/**
* 检查日期类型 ，日期格式：2007-12-12
* @param string date
* @param bool required
* @param string msg
* @return bool
*/
Validator.prototype.checkDate = function (date, required, msg) {
    //check this type : 2007-12-12
    var value = this.trim(this.$(date).value);
    var pattern_1 = /^[0-9]{4}$/;
    var pattern_2 = /^[0-9]{4}-[0-9]{1,2}$/;
    var pattern_3 = /^[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}$/;
    if ((!pattern_1.test(value) && !pattern_2.test(value) && !pattern_3.test(value)) && required == true) {
        this.addErrMsg(msg);
        return false;
    }
    return true;
}
/**
* 验证是否是整数或小数
* @param object elementId
* @param string msg
*/
Validator.prototype.checkIntFloat = function (elementId, intLength, floatLength, min, msg) {
    var integer = this.trim(this.$(elementId).value);

    if (isNaN(integer) || integer == "" || integer < min) {
        this.addErrMsg(msg);
        return false;
    }
    var point = integer.indexOf(".");
    if (point != -1) {
        var integerPart = integer.substr(0, point);
        var floatPart = integer.substr(point + 1, integer.length);
        if (integerPart.length > intLength || floatPart.length > floatLength) {
            this.addErrMsg(msg);
            return false;
        }
    }
    return true;
}
/**
* 验证字符在指定长度没有中文且没有空格的情况下
* @param object elementId
* @param int length 字符长度
* @param int minLength 字符的最小长度
* @param int maxLength 字符的最大长度
* @param string msg1 字符长度超过了指定长度的提示
* @param string msg2 输入信息中不包含中文或空格的提示信息
*/
Validator.prototype.checkMix = function (elementId, length, minLength, maxLength, msg1, msg2) {
    var str = this.trim(this.$(elementId).value);
    var strLength = str.length;
    var pattern_chinese = /[\u4E00-\u9FA5]/; //汉字
    var pattern_space = /\s/; //空格
    var pattern_english = /[a-zA-Z]/; //英文
    var pattern_false = /[^\u4E00-\u9FA5\s]{length,}/;
    if (typeof (length) == undefined) {
        var length = 20;
    }
    if (strLength < minLength || strLength > maxLength) {
        this.addErrMsg(msg1);
        return false;
    }
    if (pattern_false.test(str)) {
        this.addErrMsg(msg2);
        return false;
    }
    re = new RegExp("[a-zA-Z0-9|-]{" + length + ",}", "i");
    if (str.match(re)) {
        this.addErrMsg(msg2);
        return false;
    }
    var includesChinese = pattern_chinese.test(str);
    var includesSpace = pattern_space.test(str);
    var includesEnglish = pattern_english.test(str);
    if ((strLength == 0 || strLength > length) && (!includesChinese && !includesSpace)) {
        this.addErrMsg(msg2);
        return false;
    }
    return true;
}
/**
* 去掉首尾空格
* @param string s
* @return string 去掉首尾空格后的字符串
*/
Validator.prototype.trim = function (s) {
    return s.replace(/(^\s*)|(\s*$)/g, "");
}
/**
* 检查字符串的长度
* @param string
* @param int min
* @param int max
* @param string msg
*/
Validator.prototype.checkLength = function (str, min, max, msg) {
    var s = str;

    if (this.getBytes(s) < min || this.getBytes(s) > max) {
        this.addErrMsg(msg);
        return false;
    }

    return true;
}
/**
* 检查指定ID的值是否与指定值相等
* @param object elementId
* @param string value
* @param string msg
*/
Validator.prototype.checkEque = function (elementId, value, msg) {
    if (this.$(elementId).value != value) {
        this.addErrMsg(msg);
        return false;
    }
    return true;
}
/**
* 检查指定ID的值与value相等的话就返回错误
* @param object elementId
* @param string value
* @param string msg
*/
Validator.prototype.checkUnEque = function (elementId, value, msg) {
    if (this.$(elementId).value == value) {
        this.addErrMsg(msg);
        return false;
    }
    return true;
}
/**
* 验证图片格式
* @param string value
*/
Validator.prototype.checkPicture = function (value) {
    var pattern_picture = /\.jpg|\.png|\.gif|\.jpeg$/i;
    if (!pattern_picture.test(value)) {
        return false;
    }
    return true;
}
/**
* 验证radio 和checkBox 选中是否大于指定个数
* @param Object itemName
* @param int maxChecked
* @param string msg
*/
Validator.prototype.checkRadio = function (itemName, maxChecked, msg) {
    var count = 0;
    var element = document.getElementsByName(itemName);
    for (var i = 0; i < element.length; i++) {
        if (element[i].checked == true) {
            count++;
        }
    }
    if (count < maxChecked) {
        this.addErrMsg(msg);
        return false;
    }
    return true;
}
/**
* 
* 向页面中添加图片
* @param Object nodeId
* @param String value
* @param Bool hidden
* @return Object
*/
Validator.prototype.insertImg = function (nodeId, value, hidden) {
    if (this.$(nodeId + "_img")) {
        this.$(nodeId + "_img").src = this.trim(value);
        return this.$(nodeId + "_img");
    } else {
        img = document.createElement("img");
        img.style.position = "absolute";
        if (hidden) {
            img.style.display = "none";
        }
        img.src = value;
        img.id = nodeId + "_img";
        if (!this.$(nodeId)) {
            var node = document.createElement("DIV");
            node.id = nodeId;
            node.style.display = "none";
            document.body.appendChild(node);
        }
        this.$(nodeId).appendChild(img);
        return img;
    }
}
/**
* 验证图片的大小
* @param Object img
* @return file size (k)
*/
Validator.prototype.checkImageSize = function (img) {
    return img.fileSize / 1024;
}

Validator.prototype.checkOutsideNum = function (elementId, msg) {
    var pattern_1 = /\D+/;

    var obj = this.$(elementId).value
    if (obj.match(pattern_1)) {
        this.addErrMsg(msg);
        return false;
    }

    return true;
}


